
// makeing the hitbox on blue springs taller because there too damn short
addHook("MobjSpawn", function(mo)
if not mapheaderinfo[gamemap].rainfoliage then return end
	mo.height = $*2
end, MT_BLUEDIAG)

//--------- single player race lua linedef trigger----------//

local MetalCircuitWrongWay = function(player,damage)
	// if damage is true hurt the player beacuse thay fell into a pit
	local mo = player.mo
	mo.momx = 0
	mo.momy = 0

	if damage then
		P_DamageMobj(mo, nil, nil, 1, DMG_DEATHPIT)
	else
		S_StartSound(mo, sfx_lose, player)
	end
end

local function raceintopit(line, mo)
	if mo and mo.player then
		MetalCircuitWrongWay (mo.player,true) // do damage you fell in a pit
	end
end

addHook("LinedefExecute", raceintopit, "MRACETR0")

// normal circuit lua I use//

local function tradeshield(line, mo) // trade shield for rings
		if (mo.player.powers[pw_shield] & SH_NOSTACK) == SH_ARMAGEDDON then
			P_GivePlayerRings(mo.player, 200)
			S_StartSound(mo, sfx_chchng, mo.player)
			P_SwitchShield(mo.player, SH_NONE)
		elseif (mo.player.powers[pw_shield] & SH_NOSTACK) == SH_FORCE|1 then
			P_GivePlayerRings(mo.player, 50)
			S_StartSound(mo, sfx_chchng, mo.player)
			P_SwitchShield(mo.player, SH_NONE)
		elseif (mo.player.powers[pw_shield]) > 0 then
			P_GivePlayerRings(mo.player, 20)
			S_StartSound(mo, sfx_chchng, mo.player)
			P_SwitchShield(mo.player, SH_NONE)
		end
	
end

addHook("LinedefExecute", tradeshield, "LUATRA")

local function fourcesuperspeed(line, mo) // spend rings for super shoes
		if mo.player.rings >= 21 then
			mo.player.rings = $-21
			mo.player.powers[pw_sneakers] = TICRATE*25
			S_StartSound(mo, sfx_antiri, mo.player)
		end
	
end

addHook("LinedefExecute", fourcesuperspeed, "LUASPE") 

local function fourcegravityboots(line, mo) // spend rings for gravity
		if mo.player.rings >= 34 then
			mo.player.rings = $-34
			mo.momz = 0
			mo.player.powers[pw_gravityboots] = TICRATE*3/2
			S_StartSound(mo, sfx_antiri, mo.player)
		end
	
end

addHook("LinedefExecute", fourcegravityboots, "LUAGRV") 

local function fourcerecycle(line, mo) // spend rings for Recycler
	
		if mo.valid and mo.player.rings >= 5 then
			mo.player.rings = $-5
			local icon = P_SpawnMobj(mo.x, mo.y, mo.z, MT_RECYCLER_ICON)
			S_StartSound(mo, sfx_antiri, mo.player)
			icon.flags2 = $ | MF2_DONTDRAW
		end
	
end

addHook("LinedefExecute", fourcerecycle, "LUARYC") 

local function fourcewindshield(line, mo) // spend rings for wind shield
	
		if mo.valid and mo.player.rings >= 21 then
			mo.player.rings = $-21
			local icon = P_SpawnMobj(mo.x, mo.y, mo.z, MT_WHIRLWIND_ICON)
			icon.target = mo
			icon.flags2 = $ | MF2_DONTDRAW
			S_StartSound(mo, sfx_antiri, mo.player)
		end
	
end

addHook("LinedefExecute", fourcewindshield, "LUAWIND") 

local function forcesuper(line, mo)
	
	//for mo in players.iterate
		if not (mo.player.charflags & SF_SUPER) // make sure anyone can turn super
            mo.player.charflags = $1 + SF_SUPER
		end
		if mo.player.powers[pw_super] == 0 and mo.player.rings > 0 then
			P_SpawnMobj(mo.x, mo.y, mo.z, MT_EMERALD1)
			P_SpawnMobj(mo.x, mo.y, mo.z, MT_EMERALD2)
			P_SpawnMobj(mo.x, mo.y, mo.z, MT_EMERALD3)
			P_SpawnMobj(mo.x, mo.y, mo.z, MT_EMERALD4)
			P_SpawnMobj(mo.x, mo.y, mo.z, MT_EMERALD5)
			P_SpawnMobj(mo.x, mo.y, mo.z, MT_EMERALD6)
			P_SpawnMobj(mo.x, mo.y, mo.z, MT_EMERALD7)
			mo.player.powers[pw_super] = 1 // turn supper
		end
		// damage player if they hve zero rings
		P_DamageMobj(mo, nil, nil, 0, DMG_NUKE)
	//end
	
end

addHook("LinedefExecute", forcesuper, "LUASUP")

local function fourceinvincibility(line, mo) // spend rings for super shoes
		if mo.player.rings >= 34 then
			mo.player.rings = $-34
			mo.player.powers[pw_invulnerability] = TICRATE*25
			S_StartSound(mo, sfx_antiri, mo.player)
		end
	
end

addHook("LinedefExecute", fourceinvincibility, "LUAINV") 

local function fourceeggman(line, mo) // this is a good idea
	
		if mo.valid and mo.player.rings >= 69 then // funny number
			mo.player.rings = $-69
			S_StartSound(nil, sfx_bewar3, nil)
			for player in players.iterate do // everyone gets an eggman
				if player.spectator or player.playerstate != 0 then
				 return
				end
				local mo = player.mo
				local icon = P_SpawnMobj(mo.x, mo.y, mo.z, MT_EGGMAN_ICON)
				icon.target = mo
			end
		end
	
end

addHook("LinedefExecute", fourceeggman, "LUAEGGA") 